<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
 <head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  <title>从 HTML 中分离</title>

 </head>
 <body><div class="manualnavbar" style="text-align: center;">
 <div class="prev" style="text-align: left; float: left;"><a href="language.basic-syntax.phptags.html">PHP 标记</a></div>
 <div class="next" style="text-align: right; float: right;"><a href="language.basic-syntax.instruction-separation.html">指令分隔符</a></div>
 <div class="up"><a href="language.basic-syntax.html">基本语法</a></div>
 <div class="home"><a href="index.html">PHP Manual</a></div>
</div><hr /><div id="language.basic-syntax.phpmode" class="sect1">
  <h2 class="title">从 HTML 中分离</h2>
  <p class="para">
   凡是在一对开始和结束标记之外的内容都会被
   PHP 解析器忽略，这使得 PHP 文件可以具备混合内容。 可以使 PHP
   嵌入到 HTML 文档中去，如下例所示。
   <div class="example" id="example-65">
    <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000">
&lt;p&gt;This&nbsp;is&nbsp;going&nbsp;to&nbsp;be&nbsp;ignored&nbsp;by&nbsp;PHP&nbsp;and&nbsp;displayed&nbsp;by&nbsp;the&nbsp;browser.&lt;/p&gt;<br /><span style="color: #0000BB">&lt;?php&nbsp;</span><span style="color: #007700">echo&nbsp;</span><span style="color: #DD0000">'While&nbsp;this&nbsp;is&nbsp;going&nbsp;to&nbsp;be&nbsp;parsed.'</span><span style="color: #007700">;&nbsp;</span><span style="color: #0000BB">?&gt;<br /></span>&lt;p&gt;This&nbsp;will&nbsp;also&nbsp;be&nbsp;ignored&nbsp;by&nbsp;PHP&nbsp;and&nbsp;displayed&nbsp;by&nbsp;the&nbsp;browser.&lt;/p&gt;</span>
</code></div>
    </div>

   </div>
   这将如预期中的运行，因为当 PHP 解释器碰到 ?&gt;
   结束标记时就简单地将其后内容原样输出（除非马上紧接换行 - 见<a href="language.basic-syntax.instruction-separation.html" class="link">指令分隔符</a>）直到碰到下一个开始标记；例外是处于条件语句中间时，此时
   PHP 解释器会根据条件判断来决定哪些输出，哪些跳过。见下例。
  </p>
  <p class="para">
   使用条件结构：
   <div class="example" id="example-66">
    <p><strong>Example #1 使用条件的高级分离术</strong></p>
     <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000">
<span style="color: #0000BB">&lt;?php&nbsp;</span><span style="color: #007700">if&nbsp;(</span><span style="color: #0000BB">$expression&nbsp;</span><span style="color: #007700">==&nbsp;</span><span style="color: #0000BB">true</span><span style="color: #007700">):&nbsp;</span><span style="color: #0000BB">?&gt;<br /></span>&nbsp;&nbsp;This&nbsp;will&nbsp;show&nbsp;if&nbsp;the&nbsp;expression&nbsp;is&nbsp;true.<br /><span style="color: #0000BB">&lt;?php&nbsp;</span><span style="color: #007700">else:&nbsp;</span><span style="color: #0000BB">?&gt;<br /></span>&nbsp;&nbsp;Otherwise&nbsp;this&nbsp;will&nbsp;show.<br /><span style="color: #0000BB">&lt;?php&nbsp;</span><span style="color: #007700">endif;&nbsp;</span><span style="color: #0000BB">?&gt;</span>
</span>
</code></div>
     </div>

   </div>
   上例中 PHP 将跳过条件语句未达成的段落，即使该段落位于 PHP 开始和结束标记之外。由于
   PHP 解释器会在条件未达成时直接跳过该段条件语句块，因此 PHP 会根据条件来忽略之。
  </p>
  <p class="para">
   要输出大段文本时，跳出 PHP 解析模式通常比将文本通过
   <span class="function"><a href="function.echo.html" class="function">echo</a></span> 或 <span class="function"><a href="function.print.html" class="function">print</a></span> 输出更有效率。
  </p>
  <p class="para">
   可以在 PHP 中使用四对不同的开始和结束标记。其中两种，&lt;?php ?&gt;
   和 &lt;script language=&quot;php&quot;&gt; &lt;/script&gt; 总是可用的。另两种是短标记和
   <span class="productname">ASP</span> 风格标记，可以在 <var class="filename">php.ini</var>
   配置文件中打开或关闭。尽管有些人觉得短标记和
   <span class="productname">ASP</span> 风格标记很方便，但移植性较差，通常不推荐使用。
   <blockquote class="note"><p><strong class="note">Note</strong>: 
    <p class="para">
     此外注意如果将 PHP 嵌入到 XML 或 XHTML
     中则需要使用 &lt;?php ?&gt; 标记以保持符合标准。
    </p>
   </p></blockquote>
  </p>
  <p class="para">
   <div class="example" id="example-67">
    <p><strong>Example #2 PHP 开始和结束标记</strong></p>
    <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000">
1.&nbsp;&nbsp;<span style="color: #0000BB">&lt;?php&nbsp;</span><span style="color: #007700">echo&nbsp;</span><span style="color: #DD0000">'if&nbsp;you&nbsp;want&nbsp;to&nbsp;serve&nbsp;XHTML&nbsp;or&nbsp;XML&nbsp;documents,&nbsp;do&nbsp;it&nbsp;like&nbsp;this'</span><span style="color: #007700">;&nbsp;</span><span style="color: #0000BB">?&gt;<br /></span><br />2.&nbsp;&nbsp;<span style="color: #0000BB">&lt;script&nbsp;language="php"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">echo&nbsp;</span><span style="color: #DD0000">'some&nbsp;editors&nbsp;(like&nbsp;FrontPage)&nbsp;don\'t<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;like&nbsp;processing&nbsp;instructions'</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">&lt;/script&gt;<br /></span><br />3.&nbsp;&nbsp;<span style="color: #0000BB">&lt;?&nbsp;</span><span style="color: #007700">echo&nbsp;</span><span style="color: #DD0000">'this&nbsp;is&nbsp;the&nbsp;simplest,&nbsp;an&nbsp;SGML&nbsp;processing&nbsp;instruction'</span><span style="color: #007700">;&nbsp;</span><span style="color: #0000BB">?&gt;<br /></span>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000BB">&lt;?=&nbsp;expression&nbsp;?&gt;</span>&nbsp;This&nbsp;is&nbsp;a&nbsp;shortcut&nbsp;for&nbsp;"<span style="color: #0000BB">&lt;?&nbsp;</span><span style="color: #007700">echo&nbsp;</span><span style="color: #0000BB">expression&nbsp;?&gt;</span>"<br /><br />4.&nbsp;&nbsp;&lt;%&nbsp;echo&nbsp;'You&nbsp;may&nbsp;optionally&nbsp;use&nbsp;ASP-style&nbsp;tags';&nbsp;%&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;%=&nbsp;$variable;&nbsp;#&nbsp;This&nbsp;is&nbsp;a&nbsp;shortcut&nbsp;for&nbsp;"&lt;%&nbsp;echo&nbsp;.&nbsp;.&nbsp;."&nbsp;%&gt;</span>
</code></div>
    </div>

   </div>
  </p>
  <p class="para">
   上例中的 1 和 2 中使用的标记总是可用的，其中示例 1 中是最常用，并建议使用的。
  </p>
  <p class="para">
   短标记（上例 3）仅在通过 <var class="filename">php.ini</var> 配置文件中的指令
   <a href="ini.core.html#ini.short-open-tag" class="link">short_open_tag</a>
   打开后才可用，或者在 PHP 编译时加入了
   <strong class="option unknown">--enable-short-tags</strong>
 选项。
  </p>
  <p class="para">
   <span class="productname">ASP</span> 风格标记（上例 4）仅在通过 <var class="filename">php.ini</var>
   配置文件中的指令
   <a href="ini.core.html#ini.asp-tags" class="link">asp_tags</a> 打开后才可用。
  </p>
  <blockquote class="note"><p><strong class="note">Note</strong>: 
   <p class="para">
    在以下情况应避免使用短标记：开发需要再次发布的程序或者库，或者在用户不能控制的服务器上开发。因为目标服务器可能不支持短标记。为了代码的移植及发行，确保不要使用短标记。
   </p>
  </p></blockquote>
  <blockquote class="note"><p><strong class="note">Note</strong>: 
   <p class="para">
    在 PHP 5.2 和之前的版本中，解释器不允许一个文件的全部内容就是一个开始标记
    <em>&lt;?php</em>。自 PHP 5.3 起则允许此种文件，但要开始标记后有一个或更多白空格符。
   </p>
  </p></blockquote>
  <blockquote class="note"><p><strong class="note">Note</strong>: 
   <p class="para">
    自 PHP 5.4 起，短格式的 echo 标记 <em>&lt;?=</em>
	总会被识别并且合法，而不管 <a href="ini.core.html#ini.short-open-tag" class="link">short_open_tag</a> 的设置是什么。
   </p>
  </p></blockquote>
 </div><hr /><div class="manualnavbar" style="text-align: center;">
 <div class="prev" style="text-align: left; float: left;"><a href="language.basic-syntax.phptags.html">PHP 标记</a></div>
 <div class="next" style="text-align: right; float: right;"><a href="language.basic-syntax.instruction-separation.html">指令分隔符</a></div>
 <div class="up"><a href="language.basic-syntax.html">基本语法</a></div>
 <div class="home"><a href="index.html">PHP Manual</a></div>
</div></body></html>
